import request from '@utils/request'
import { APIParams, APIResult } from '@utils/request/type'
import { Template, VariableDTO, VariableModelSaveForm, VbTemplate } from '@/api/entity/variable'
import { ServerEnum } from '@/api/enum/server'

/**
 * 分页查询
 * @param params
 */
export const getVariableModelListByPageAPI = (params: APIParams.Page<{
  q: string
}>) => request.post<APIResult.Page<VbTemplate[]>>(ServerEnum.System + '/vb/template/page', params)

/**
 * 根据id获取变量模板
 * @param params
 */
export const getVariableModelByIdAPI = (params: { id: string }) => request.get<APIResult<VbTemplate>>(ServerEnum.System + '/vb/template/view/' + params.id)

/**
 * 根据设备id获取变量列表
 * @param params
 */
export const getVariableListByDeviceIdAPI = (params: { id: string }) => request.get<APIResult<VariableDTO[]>>(ServerEnum.System + '/variable/list/' + params.id)

/**
 * 根据设备查询设备中是否展示和是否存储的变量列表
 * @param params
 */
export const getVariableListByParamsAPI = (params: {
  deviceId: string,
  // 是否展示 0-不展示 1-展示
  show?: string,
  // 是否存储 0-不存储 1-存储
  storage?: string
}) => request.post<APIResult<VariableDTO[]>>(ServerEnum.System + '/variable/listByDevice', params)

/**
 * 根据模板查询设备中是否展示和是否存储的变量列表
 * @param params
 */
export const getVariableListByModelAPI = (params: {
  templateId: string,
  // 是否展示 0-不展示 1-展示
  show?: string,
  // 是否存储 0-不存储 1-存储
  storage?: string
}) => request.post<APIResult<VariableDTO[]>>(ServerEnum.System + '/variable/listByTemplateId', params)

/**
 * 根据设备id获取展示的变量列表
 * @param params
 */
export const getShowVariableListByDeviceIdAPI = (params: {
  deviceId: string,
}) => getVariableListByParamsAPI({
  deviceId: params.deviceId,
  show: '1'
})

/**
 * 获取变量模板列表
 */
export const getVariableModelListAPI = () => request.post<APIResult<Template[]>>(ServerEnum.System + '/vb/template/list')

/**
 * 添加变量模板
 * @param params
 */
export const addVariableModelAPI = (params: VariableModelSaveForm) => request.post(ServerEnum.System + '/vb/template/add', params)

/**
 * 编辑变量模板
 * @param params
 */
export const editVariableModelAPI = (params: VariableModelSaveForm) => request.post(ServerEnum.System + '/vb/template/edit', params)

/**
 * 删除变量模板
 * @param params
 */
export const delVariableModelAPI = (params: { templateIds: string[] }) => request.post(ServerEnum.System + '/vb/template/delete', params)
